#include "mypushbutton.h"
#include <QDebug>
#include <QPropertyAnimation>

MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent)
{

}

MyPushButton::MyPushButton(QString norMalImg, QString pressedImg)
{
    this->m_norMalImg = norMalImg;
    this->m_pressedImg = pressedImg;
    QPixmap pix;
    bool ret = pix.load(this->m_norMalImg); // 加载图片
    if(!ret) return; // 检测图片是否加载成功
    pix = pix.scaled(pix.width()*0.7, pix.height()*0.7);
    this->setIcon(pix); // 设置按钮图标
    this->setIconSize(QSize(pix.width(), pix.height())); // 设置按钮图标
    this->setFixedSize(pix.width(), pix.height()); // 设置图片固定大小
    this->setStyleSheet("QPushButton{border:0px;}"); //设置不规则图片的样式表
}

// 向下跳
void MyPushButton::zoomDown(void)
{
    QPropertyAnimation * animation = new QPropertyAnimation(this, "geometry");
    animation->setDuration(200); // 设置时间间隔
    animation->setStartValue(QRect(this->x(),this->y(),this->width(),this->height())); // 设置起始值
    animation->setEndValue(QRect(this->x(),this->y()+10,this->width(),this->height())); // 设置结束值
    animation->setEasingCurve(QEasingCurve::OutBounce); // 设置缓和曲线（弹跳效果）
    animation->start(); // 启动动画
}
// 向上跳
void MyPushButton::zoomUp(void)
{
    QPropertyAnimation * animation = new QPropertyAnimation(this, "geometry");
    animation->setDuration(200); // 设置时间间隔
    animation->setStartValue(QRect(this->x(),this->y()+10,this->width(),this->height())); // 设置起始值
    animation->setEndValue(QRect(this->x(),this->y(),this->width(),this->height())); // 设置结束值
    animation->setEasingCurve(QEasingCurve::OutBounce); // 设置缓和曲线（弹跳效果）
    animation->start(); // 启动动画
}

// 重写按钮的鼠标按下和释放事件
void MyPushButton::mousePressEvent(QMouseEvent *e)
{
    if(this->m_pressedImg != "")
    {
        QPixmap pix;
        bool ret = pix.load(this->m_pressedImg); // 加载图片
        if(!ret) return; // 检测图片是否加载成功
        this->setIcon(pix); // 设置按钮图标
        this->setIconSize(QSize(pix.width(), pix.height())); // 设置按钮图标
        this->setFixedSize(pix.width(), pix.height()); // 设置图片固定大小
        this->setStyleSheet("QPushButton{border:0px;}"); //设置不规则图片的样式表
    }
    return QPushButton::mousePressEvent(e);
}
void MyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
    if(this->m_pressedImg != "")
    {
        QPixmap pix;
        bool ret = pix.load(this->m_norMalImg); // 加载图片
        if(!ret) return; // 检测图片是否加载成功
        this->setIcon(pix); // 设置按钮图标
        this->setIconSize(QSize(pix.width(), pix.height())); // 设置按钮图标
        this->setFixedSize(pix.width(), pix.height()); // 设置图片固定大小
        this->setStyleSheet("QPushButton{border:0px;}"); //设置不规则图片的样式表
    }
    return QPushButton::mouseReleaseEvent(e);
}

